/*
编程实现：统计字符串"ABCD123!@#$%ab"中大写字母、小写字母、数字、其它字符的个数并打印出来
* */
package Q1;

public class countStr {
//1.自定义成员变量来记录需要统计的字符串（默认设置为"ABCD123!@#$%ab"），大写字母个数，小写字母个数，数字的个数和其他字符的个数
    static String text = "ABCD123!@#$%ab";
    static int countAlp = 0;
    static int countSml = 0;
    static int countNum = 0;
    static int countOther = 0;

    public countStr(String text) {
        this.text = text;
        this.Count();
    }
        public countStr() {
        this.Count();
    }
    //2.自定义用正则表达式判断字符并记录大写字母，小写字母，数字和其他字符个数的成员方法

    public void Count(){
        System.out.println("countStr.Count");
        for (int i = 0; text.length() > i; i++){
            String character = String.valueOf(text.charAt(i));
            //2.1 判断是否为大写字母并计数
            if(character.matches("[A-Z]")){
                countAlp++;
//                System.out.println(character);
            }
            //2.2 判断是否为小写字母并计数
            else if(character.matches("[a-z]")){
//                System.out.println(character);
                countSml++;
            }
            //2.3 判断是否为数字并计数
            else if(character.matches("[0-9]")){
//                System.out.println(character);
                countNum++;
            }
            //2.4 其余归类为其他字符并计数
            else{
//                System.out.println(character);
                countOther++;
            }
        }
    }

//3.创建单个个数的获取方法
    public static int getCountAlp() {
        return countAlp;
    }

    public static int getCountSml() {
        return countSml;
    }

    public static int getCountNum() {
        return countNum;
    }

    public static int getCountOther() {
        return countOther;
    }

    @Override
    public String toString() {
        return "字符串为："+ this.text + "\n大写字母个数为： "+ getCountAlp()
                +"\n小写字母个数为："+ getCountSml()+"\n数字的个数为："+ getCountNum()+"\n其他字符的个数为：" + getCountOther();
    }
}
